package com.fy.fyspace.common.annotation;

import java.lang.annotation.*;

/**
 * 性能监控注解
 * 用于标记需要监控性能的接口方法
 * 
 * @author fy
 * @since 2024-01-01
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface PerformanceMonitor {
    
    /**
     * 监控名称，用于标识被监控的方法
     * 如果不指定，将使用类名.方法名作为默认值
     */
    String value() default "";
    
    /**
     * 监控描述，用于说明监控的目的
     */
    String description() default "";
    
    /**
     * 慢查询阈值（毫秒）
     * 超过此阈值的请求将被标记为慢查询
     */
    long slowThreshold() default 1000L;
    
    /**
     * 是否记录请求参数
     * 默认不记录，避免敏感信息泄露
     */
    boolean logParams() default false;
    
    /**
     * 是否记录响应结果
     * 默认不记录，避免敏感信息泄露
     */
    boolean logResult() default false;
    
    /**
     * 是否记录异常信息
     * 默认记录，用于问题排查
     */
    boolean logException() default true;
    
    /**
     * 是否启用监控
     * 可以通过配置动态控制是否启用监控
     */
    boolean enabled() default true;
} 